
#include <string.h>
#include <stdlib.h>
#include <ctype.h>

// 函数声明：将十六进制字符串转换为十进制数
unsigned int hexToDecimal(const char *hex);

int main(int argc, char *const argv[]) {
    if (argc < 2) {
        printf("Usage: %s <hexadecimal numbers separated by spaces>\n", argv[0]);
        return 1;
    }

    // 遍历命令行参数（跳过程序名argv[0]）
    for (int i = 1; i < argc; ++i) {
        char *hexStr = argv[i];
        unsigned int decimalNum = hexToDecimal(hexStr);

        // 检查转换是否成功
        if (decimalNum == UINT_MAX) {
            printf("wrong "); // 如果转换失败，输出"wrong"
        } else {
            printf("%u ", decimalNum); // 否则输出十进制数
        }
    }

    printf("\n");
    return 0;
}

// 函数定义：将十六进制字符串转换为十进制数
unsigned int hexToDecimal(const char *hex) {
    unsigned int decimal = 0;
    int base = 1;

    // 从字符串末尾开始遍历
    for (int i = strlen(hex) - 1; i >= 0; --i) {
        char c = tolower(hex[i]); // 转换为小写以简化比较

        // 检查字符是否是有效的十六进制数字
        if (c >= '0' && c <= '9') {
            decimal += (c - '0') * base;
            base *= 16;
        } else if (c >= 'a' && c <= 'f') {
            decimal += (c - 'a' + 10) * base;
            base *= 16;
        } else {
            // 如果字符无效，则返回UINT_MAX表示转换失败
            return UINT_MAX;
        }
    }

    return decimal;
}